//信号是由操作系统传递给进程的中断，会打断进程的正常执行。
#include <iostream>
#include <csignal>//信号定义在这个头文件中
#include <unistd.h>//Linux下的sleep函数
#include <windows.h>//windows下的sleep函数
using namespace std;

void signalHandler(int signum)//信号处理函数
{
    cout << "Interrupt signal (" << signum << ") received.\n";

    exit(signum);//提前终止程序
}

int main()
{
    int t = 0;
    // 必须使用signal函数来注册信号,并将其与处理函数相关联
    signal(SIGINT, signalHandler);

    while (++t)
    {
        cout << "Going to sleep...." << endl;
        if (t == 3)
        {
            raise(SIGINT);//函数raise()生成信号
//这些信号包括：SIGHUP,SIGINT，SIGQUIT,SIGILL，SIGABRT,SIGFPE，SIGKILL，SIGSEGV，SIGPIPE,SIGALRM,SIGTERM
        }
        sleep(t);//等待t时间再执行。Windows单位是毫秒，Linux单位是秒
    }

    return 0;
}